package com.gack.business.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.gack.business.service.CommodityServiceInterface;
import com.gack.helper.common.AjaxJson;
import com.gack.helper.common.abstractobj.ApiController;

import io.swagger.annotations.ApiOperation;
/**
 * 运营后台商品管理接口
 * @author lsy
 *
 */
@RestController
@RequestMapping(ApiController.COMMODITY_URL)
public class CommodityController {
	
	@Autowired
	private CommodityServiceInterface commodityService;
	
	
	/**
	 * 
	* @Title: addCommodity 
	* @Description: TODO 增加商品 
	* @param @param faceValue 面值价格
	* @param @param salesPrice 销售价格
	* @param @param photoUrl	图片URL
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="增加商品",notes="增加商品")
	@PostMapping("/addCommodity")
	public AjaxJson addCommodity(Integer faceValue, Integer salesPrice, String photoUrl, String name, String uid){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.addCommodity(faceValue, salesPrice, photoUrl, name, uid));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	
	/**
	 * 
	* @Title: findCommodity 
	* @Description: TODO 查询商品详情 
	* @param @param id 商品详情
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="查询商品详情",notes="查询商品详情")
	@PostMapping("/findCommodity")
	public AjaxJson findCommodity(String id){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.findCommodity(id));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	
	/**
	 * 
	* @Title: findCommodityList 
	* @Description: TODO 按条件查询商品列表 
	* @param @param page 页
	* @param @param size 大小
	* @param @param status	状态
	* @param @param startTime 开始时间
	* @param @param endTime 结束时间
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="按条件查询商品列表",notes="按条件查询商品列表")
	@PostMapping("/findCommodityList")
	public AjaxJson findCommodityList(@RequestParam(value = "page", defaultValue = "0") Integer page,
            @RequestParam(value = "size", defaultValue = "10") Integer size, Integer status, String startTime, String endTime){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.findCommodityList(page, size, status, startTime, endTime));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	
	/**
	 * 
	* @Title: dropOffCommodity 
	* @Description: TODO 下架商品 
	* @param @param id 商品详情
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="下架商品",notes="下架商品")
	@PostMapping("/dropOffCommodity")
	public AjaxJson dropOffCommodity(String id, String uid){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.dropOffCommodity(id , uid));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}

	
	
	/**
	 * 
	* @Title: deleteCommodity 
	* @Description: TODO 删除商品 
	* @param @param id 商品详情
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="删除商品",notes="删除商品")
	@PostMapping("/deleteCommodity")
	public AjaxJson deleteCommodity(String id, String uid){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.deleteCommodity(id, uid));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}

	/**
	 * 
	* @Title: findSaleList 
	* @Description: TODO 销售列表
	* @param @param page
	* @param @param size
	* @return AjaxJson    返回类型
	* @author lsy
	* @throws
	* @date 2018年6月6日
	 */
	@ApiOperation(value="销售列表",notes="销售列表")
	@PostMapping("/findSaleList")
	public AjaxJson findSaleList(Integer page, Integer size){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.findSaleList(page, size));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	
	@ApiOperation(value="上架商品",notes="上架商品")
	@PostMapping("/upshelCommodity")
	public AjaxJson upshelCommodity(String id, String uid) {
		AjaxJson ajaxJson = new AjaxJson();
		try {
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.upshelCommodity(id, uid));
		} catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(false).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	
	@ApiOperation(value="PC首页商品列表",notes="PC首页商品列表")
	@PostMapping("/commodityList")
	public AjaxJson commodityList(@RequestParam(value = "page", defaultValue = "0") Integer page,
            @RequestParam(value = "size", defaultValue = "4") Integer size){
		AjaxJson ajaxJson = new AjaxJson();
		try{
			ajaxJson.setSuccess(true).setStatus(200).setData(commodityService.commodityList(page, size));
		}catch (Exception e) {
			e.printStackTrace();
			ajaxJson.setSuccess(true).setStatus(500).setMsg("操作失败");
		}
		return ajaxJson;
	}
	


}
